package h_10_21;

import java.util.Arrays;

/**
 * 2090. 半径为 k 的子数组平均值
 * https://leetcode.cn/problems/k-radius-subarray-averages/description/
 */
public class Main1 {
    public int[] getAverages(int[] nums, int k) {
        int n = nums.length;
        int[] ret = new int[n];
        Arrays.fill(ret,-1);
        // 这里注意使用long，太多值会将int越界
        long sum = 0;
        // 将整个符合长度的区间当成一个窗口，而不是只看一半的窗口大小进行判断
        for(int i = 0;i < n;i++) {
            // 入窗口
            sum += nums[i];

            // 判断
            if(i < 2 * k) {
                continue;
            }

            // 更新，出窗口
            ret[i - k] = (int) (sum / (2 * k + 1));

            // 出
            sum -= nums[i - 2 * k];
        }
        return ret;
    }
}
